/*
 * Copyright 2006-2008 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package net.martinimix.domain.account;

import java.beans.PropertyEditorSupport;


/**
 * Provides a phone number property editor.
 * 
 * @author Scott Rossillo
 *
 */
public class PhoneNumberEditor extends PropertyEditorSupport {

	public void setAsText(String textValue) {
		
		String numbers = stripNonNumeric(textValue);
		PhoneNumber phoneNumber = new PhoneNumber();
		
		if(numbers.length() >= 3) {
			phoneNumber.setAreaCode(numbers.substring(0,3));
		}
		
		if(numbers.length() >= 6) {
			phoneNumber.setPrefix(numbers.substring(3,6));
		}
		if(numbers.length() > 6) {
			phoneNumber.setNumber(numbers.substring(6));
		}
		
		this.setValue(phoneNumber);
	}
	
	private String stripNonNumeric(String text) {
		
		StringBuffer numbers = new StringBuffer(9);
		
		for(int i = 0; i < text.length(); i++) {
			char c = text.charAt(i);
			if(Character.isDigit(c)) {
				numbers.append(c);
			}
		}
		
		return numbers.toString();
	}
	
}
